/*
 *  $Id: Angle.cs 1191 2010-11-12 16:17:29Z thenn.erannor $
 *  This file is a part of Ragima CCG.
 *  (C) 2008-2010 Ragima development group.
 *
 *  Licensed under the terms of the GNU GPL License version 2.
 *
 */

using System;

using AgateLib.Geometry;

namespace Ragima.Helper {
    /// <summary>
    /// Расширения для операций с углами.
    /// </summary>
    public static class AngleExtensions {
        /// <summary>
        /// Полный круговой угол.
        /// </summary>
        public const double Full = 360;
        /// <summary>
        /// Половинный круговой угол.
        /// </summary>
        public const double Half = Full / 2;

        /// <summary>
        /// Переводит радианы в градусы.
        /// </summary>
        public static double ToDegrees(this double angle) {
            return angle * Half / Math.PI;
        }

        /// <summary>
        /// Переводит градусы в радианы.
        /// </summary>
        public static double ToRadians(this double angle) {
            return angle * Math.PI / Half;
        }

        /// <summary>
        /// Нормализует угол в пределы 0..360.
        /// </summary>
        public static double NormalizeAngle(this double angle) {
            angle %= Full;
            if (angle < 0)
                angle += Full;
            return angle;
        }
    }
}
